package cc.admin.config.mybatis;

import cc.admin.common.db.util.TenantUtil;
import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler;
import com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor;
import net.sf.jsqlparser.schema.Column;
import net.sf.jsqlparser.schema.Table;

/**
 * 这里需要对别名进行一下处理，防止出错
 * @author hubin
 * @since 3.4.0
 */
public class TenantLineInnerInterceptorReplaceAlign extends TenantLineInnerInterceptor {

	public TenantLineInnerInterceptorReplaceAlign(TenantLineHandler tenantLineHandler) {
		super(tenantLineHandler);
	}
	/**
	 * 租户字段别名设置
	 * <p>tenantId 或 tableAlias.tenantId</p>
	 *
	 * @param table 表对象
	 * @return 字段
	 */
	@Override
	protected Column getAliasColumn(Table table) {
		// 如果是a01开头的表，那么需要根据实际情况进行替换一下
		if (table.getAlias() == null && table.getName().startsWith(TenantUtil.fromTenant)) {
			table.setName(TenantUtil.replaceTenantTableName(table.getName()));
		}
		return super.getAliasColumn(table);
	}

}
